﻿function acmer(){
	this.name = "";
	this.uid = new Date().getTime();
	this.oj = {
		'hdu':{
			'id':'',
			'solved':0,
			'submitted':0,
			'status':'ready',
			'updatetime':0
			},
		'pku':{
			'id':'',
			'solved':0,
			'submitted':0,
			'status':'ready',
			'updatetime':0
			},
		'bistu':{
			'id':'',
			'solved':0,
			'submitted':0,
			'status':'ready',
			'updatetime':0
			}
		};
	this.updatetime = 0;
	this.status = 'ready';
}
acmer.prototype.update = function(site){
		var xhr = new XMLHttpRequest();
		var this_acmer = this;
		var url = ""
		if (this.oj[site].status == 'loading')
			return ;
		switch(site){
		case 'hdu':
			if (!this.oj.hdu.id){
				this.oj[site].status = 'failed';
				return 0;
			}	
			url = 'http://acm.hdu.edu.cn/userstatus.php?user='+this.oj.hdu.id;
			break;
		case 'pku':
			if (!this.oj.pku.id){
				this.oj[site].status = 'failed';
				return 0;
			}	
			url = 'http://poj.org/userstatus?user_id='+this.oj.pku.id;
			break;
		case 'bistu':
			if (!this.oj.bistu.id){
				this.oj[site].status = 'failed';
				return 0;
			}	
			url = 'http://acm.bistu.edu.cn:8080/acmhome/userDetail.do?&userName='+this.oj.bistu.id;
			break;
		default:
			return 0;
		}
		this.oj[site].status = 'loading';
		xhr.onreadystatechange = function() { 
			var info = null;
			if (xhr.readyState == 4) {
				var html = xhr.responseText;
				if (!html) {
					this_acmer.status = 'error';
					this_acmer.oj[site].status = 'failed';
					return;
				} 
				
				switch(site){
				case 'hdu':
					info = getoj_hdu(html,this_acmer.oj.hdu.id);
					break;
				case 'pku':
					info = getoj_pku(html,this_acmer.oj.pku.id);
					break;
				case 'bistu':
					info = getoj_bistu(html,this_acmer.oj.bistu.id);
					break;
				}
				if (info && info.solved!= null && info.submitted != null){
				this_acmer.oj[site].solved = parseInt(info.solved);
					
				this_acmer.oj[site].submitted = parseInt(info.submitted);
				this_acmer.oj[site].status = 'success';
				this_acmer.oj[site].updatetime = new Date().getTime();
				this_acmer.updatetime = new Date().getTime();
				
				storage.acmers.save_user_list();
				//push to dom				
				}else{
					this_acmer.oj[site].status = 'failed';
				}
			}
		}
		xhr.open("GET", url, true);
		this.status = 'loading';
		xhr.send();
}
